<?php
declare(strict_types=1);

namespace longbingcore\wxcore;


use app\Common\LongbingServiceNotice;

use app\shop\model\Express;
use Exception;
use think\facade\Db;

class SocketSend{


    public function send(){
        //这里开始
        $net = new Socket();

//        $net->listen('192.168.1.55', 50000);
        $net->listen("0.0.0.0", 9561);

//        while(true) {
            $cs = $net->accept();

//            while($cs) {

//                try{
                    $ret = $net->recv_bytes($cs, 1024);

                    $this->abc($ret);
                    //println($ret);
//                }
//                catch (Exception $e)
//                {
//                    //printf('cs close');
////                    break;
//                }
////            }
//        }
        $net->close();

    }


    //打印十六进制（可以不用）
    public function println($bytes) {

        for($i=0;$i<count($bytes);$i++)
        {
            printf("%02X ", $bytes[$i]);
        }
        printf(".");
    }





    //abc处理读取到的卡（4字节）；
    public function abc($ret)
    {
        $len = $ret[4];
        if($len < 14)
        {
            //printf('无效数据');
            return ;
        }
        //
        $count = $ret[9];
        $count = ($count - 3) / 4;
        //
        for($i=0; $i<$count; $i++)
        {
            $idx = 10 + ($i * 4);
            $card = sprintf("%02X%02X%02X%02X", $ret[$idx+0], $ret[$idx+1], $ret[$idx+2], $ret[$idx+3]);//这是获取到的卡数据（按文档意思可能会读到多张卡，处理这个$card就可以了）
            printf('card['.$i.']>>'.$card.' | ');
        }

    }


}